package com.general.app.xtgl.service.impl;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.transaction.annotation.Transactional;

import com.general.app.xtgl.dao.IUserDao;
import com.general.app.xtgl.service.IUserManager;
import com.general.common.exception.BusinessException;
import com.general.common.security.entity.User;
import com.general.common.security.service.IUserService;
import com.general.common.service.impl.BaseServiceImpl;
import com.general.utils.base.StringUtil;


/**
 * 用户管理 
 * 
 * 
 * @author Administrator
 *
 */
@Transactional
public class UserServiceImpl extends BaseServiceImpl<User, IUserDao> implements IUserService, IUserManager {

	/*
	 * 
	 * @Cacheable：要缓存的方法或者类，属性：value、key、condition，
	 * 			 value是最主要的，对应ehcache.xml中声明的cache的name；
	 * 			 key的主要作用我认为是给局部更新缓存使用的，并且支持SpEL；
	 * 			 condition是触发条件，空表示全部增加，也支持SpEL。
	 * @CacheEvict：要进行清空缓存的方法或者类，
	 * 			 属性：value、key、condition、allEntries、beforeInvocation，
	 * 			前三者与@Cacheable类似，allEntries为true表示清空全部缓存，默认为false；
	 * 			beforeInvocation为true表示在方法执行以前清理缓存，默认为false
	 * 
	 */
	
	
	/*
	 * (non-Javadoc)
	 * @see com.qph.common.shiro.service.IUserService#getUserByAccount(java.lang.String)
	 */
	@Cacheable(value=BASE_CACHE,key="#username + 'getUserByUsername'")
	public User getUserByUsername(String username) {
		
		if (StringUtil.isEmpty(username)){
			throw new NullPointerException("查询用户名不能为空！");
		}
		
		return dao.getModel(username);
	}

	
	
	/*
	 * (non-Javadoc)
	 * @see com.app.general.xtgl.service.IUserManager#saveUser(com.app.common.security.entity.User)
	 */
	public boolean saveUser(User user) throws BusinessException {
		
//		User u = new User();
//		
//		u.setUserid(UuidUtil.getInstance().getUniqID());
//		u.setUsername("wangwu");
//		u.setPassword(Encrypt.encrypt("0"));
//		u.setNickname("五");
//		
//		dao.saveUser(u);
//		
//		Integer.valueOf("0.2");
//		
//		User u2 = new User();
//		
//		u2.setUserid(UuidUtil.getInstance().getUniqID());
//		u2.setUsername("lishi");
//		u2.setPassword(Encrypt.encrypt("0"));
//		u2.setNickname("李四");
//		
//		dao.saveUser(u2);

		return false;
	}



}
